package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.LeyendaEtiqueta;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 * @version 1.01
 */
public class TextoEtiquetaDAO extends GenericSAPDAO{
    //Atributos
    private List <LeyendaEtiqueta> misLeyendasEtiquetas;
    
    
    //Constructores 
     public TextoEtiquetaDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("T_TEXT_ETIQ");
        super.setMyTable(aFunction);
        this.misLeyendasEtiquetas = new ArrayList<LeyendaEtiqueta>();
    }
     
    /**
     * Columnas de Etiquetas:
     * MANDT		MANDT           CLNT	3	Mandante
     * CODIGO		ZCDO_TXT	NUMC3           Codigo de texto de tratamiento en linea
     * ZDESCRIP_ETIQ	ZDESCR_255	CHAR	255	Descripción del tratamiento  para etiqueta
     */

    @Override
    public void findAll() throws SapGeneralException {
        LeyendaEtiqueta aleyEtiqueta;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                aleyEtiqueta = new LeyendaEtiqueta(String.format("%1$03d", super.getMyTable().getInt("CODIGO")), super.getMyTable().getString("ZDESCRIP_ETIQ"));
                addLeyendaEtiqueta(aleyEtiqueta);
            }
        
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
            
        }

    }
    
    /**
     * Solo para las pruebas
     */
    @Override
    public void printAll() {        
        System.out.println("MANDT"+'\t'+"CODIGO"+'\t'+"ZDESCRIP_ETIQ");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("MANDT")  +
            '\t' + String.format("%1$03d", super.getMyTable().getInt("CODIGO")) +
            '\t' + super.getMyTable().getString("ZDESCRIP_ETIQ")
             );                
        }
    }

    public List<LeyendaEtiqueta> getMisLeyendasEtiquetas() {
        return misLeyendasEtiquetas;
    }

    private void addLeyendaEtiqueta(LeyendaEtiqueta aleyEtiqueta) {
        this.misLeyendasEtiquetas.add(aleyEtiqueta);
    }
    
    


}
